{% extends 'template.html' %}

{% block content %}
    <div class="container">
        <div style="margin-bottom: 10px">
            <!--方法1属性绑定-->
            <input type="button" value="新建订单1" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
            <!--方法2Ajax绑定-->
            <input id="btnAdd" type="button" value="新建订单2" class="btn btn-primary">
        </div>

        <!-- 新建\编辑订单（对话框） -->
        <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
                                aria-hidden="true">&times;</span></button>
                        <h4 class="modal-title" id="myModalLabel">新建</h4>
                    </div>
                    <div class="modal-body">
                        <form id="formAdd">
                            <div class="clearfix"><!--与栅格连用-->
                                {% for obj in form %}
                                    <div class="col-xs-6"><!--栅格为6-->
                                        <div class="form-group" style="position: relative;margin-bottom: 20px;">
                                            <label> {{ obj.label }} </label>
                                            {{ obj }}
                                            <span class="error-msg" style="color:red;position: absolute;"></span>
                                        </div>
                                    </div>
                                {% endfor %}
                            </div>
                        </form>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-default" data-dismiss="modal">取 消</button>
                        <button id="btnSave" type="button" class="btn btn-primary">保 存</button>
                    </div>
                </div>
            </div>
        </div>
        <!-- 删除订单（对话框） -->
        <div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
            <div class="modal-dialog" role="document">
                <div class="alert alert-danger alert-dismissible fade in" role="alert">
                    <h4>是否确定删除订单？</h4>
                    <P style="margin: 10px 10px;">删除后，所有相关联的数据都会被删除。</br>请点击下方按钮进行选择：</p>
                    <p style="text-align: right">
                        <button id="btnConfirmDelete" type="button" class="btn btn-danger">确 定</button>
                        <button type="button" class="btn btn-default" data-dismiss="modal">取 消</button>
                        </ps>
                </div>
            </div>
        </div>
        <!--订单列表-->
        <div class="panel panel-default">
            <div class="panel-heading">
                <span class="glyphicon glyphicon-th-list" aria-hidden="true"></span>
                订单列表
            </div>
            <table class="table table-bordered">
                <thead>
                <th>ID</th>
                <th>订单号</th>
                <th>标题</th>
                <th>价格</th>
                <th>状态</th>
                <th>管理员</th>
                <th>操作</th>
                </thead>
                <tbody>
                {% for query in queryset %}
                    <tr uid="{{ query.id }}">
                        <th>{{ query.id }}</th>
                        <td>{{ query.oid }}</td>
                        <td>{{ query.title }}</td>
                        <td>{{ query.price }}</td>
                        <td>{{ query.get_status_display }}</td>
                        <td>{{ query.admin.username }}</td>
                        <td>
                            <input uid="{{ query.id }}" class="btn btn-primary btn-xs btn-edit" type="button"
                                   value="编辑">
                            <input uid="{{ query.id }}" class="btn btn-danger btn-xs btn-delete" type="button"
                                   value="删除">
                        </td>
                    </tr>
                {% endfor %}
                </tbody>
            </table>
            <ul class="pagination">
                {{ page_string }}
            </ul>
        </div>
    </div>
{% endblock %}

{% block js %}
    <script type="text/javascript">
        //定义全局变量存储被删除的订单id
        var DELETE_ID;
        //编辑时原订单id存在，新建时不存在原订单所以id为0
        var EDIT_ID;

        $(function () {
            bindBtnAddEvent();
            bindBtnSaveEvent();
            bindBtnDeleteEvent();
            bindBtnEditEvent();
            bindbtnConfirmDelete();
        })

        function bindBtnAddEvent() {
            $("#btnAdd").click(function () {
                //将编辑后残留的DELETE_ID设置为空
                EDIT_ID = undefined;

                //清空对话框中的默认数据
                $("#formAdd")[0].reset();
                //修改对话框标题
                $("#myModalLabel").text("新建");
                //点击新建按钮，显示对话框
                $('#myModal').modal('show');
            });
        }

        function bindBtnSaveEvent() {
            $("#btnSave").click(function () {
                //点击保存按钮，保存订单
                //alert("保存成功！");
                //清除错误信息(jQuery锁定位置)
                $(".error-msg").empty();

                if (EDIT_ID) {
                    //编辑
                    doEdit();
                } else {
                    //添加
                    doAdd();
                }
            });
        }

        function doEdit() {
            //向后台发送请求（添加的Ajax请求）
            $.ajax({
                url: "/order/edit/" + "?uid=" + EDIT_ID,
                type: "post",
                data: $("#formAdd").serialize(),
                dataTypes: "JSON",
                success: function (res) {
                    if (res.status) {
                        alert("保存成功！");
                        //清空表单
                        $("#formAdd")[0].reset();
                        //关闭对话框
                        $("#myModal").modal('hide')
                        //用JS实现页面刷新
                        location.reload();
                    } else {

                        if (res.tips) {
                            alert(res.tips);
                        } else {
                            //alert("保存失败！");
                            //显示错误信息
                            $.each(res.error, function (name, errorList) {
                                $("#id_" + name).next().text(errorList[0]);
                            })
                        }
                    }
                }
            })
        }

        function doAdd() {
            //向后台发送请求（添加的Ajax请求）
            $.ajax({
                url: "/order/add/",
                type: "post",
                data: $("#formAdd").serialize(),
                dataTypes: "JSON",
                success: function (res) {
                    if (res.status) {
                        alert("保存成功！");
                        //清空表单
                        $("#formAdd")[0].reset();
                        //关闭对话框
                        $("#myModal").modal('hide')
                        //用JS实现页面刷新
                        location.reload();
                    } else {
                        //alert("保存失败！");
                        //显示错误信息
                        $.each(res.error, function (name, errorList) {
                            $("#id_" + name).next().text(errorList[0]);
                        })
                    }
                }
            })
        }

        function bindBtnDeleteEvent() {
            $(".btn-delete").click(function () {
                //alert("点击了删除");
                //显示删除对话框
                $("#deleteModal").modal("show");
                //获取当前行的ID并赋值给全局变量DELETE_ID
                DELETE_ID = $(this).attr("uid");
            })
        }

        //btnConfirmDelete
        function bindbtnConfirmDelete() {
            $("#btnConfirmDelete").click(function () {
                //点击确定按钮，将全局变量中设置的DELETE_ID发送到后台
                $.ajax({
                    url: "/order/delete/",//order/delete/？uid=XXX
                    type: "GET",
                    data: {
                        uid: DELETE_ID
                    },
                    dataTypes: "JSON",
                    success: function (res) {
                        if (res.status) {
                            //alert("删除成功！");
                            //隐藏删除对话框
                            $("#deleteModal").modal("hide");
                            //1、为了减轻服务器压力，此处用js在页面上删除当前一行数据
                            //$("tr[uid='"+DELETE_ID+"']").remove();
                            //全局变量置空
                            DELETE_ID = 0;
                            //2、显示当前数据(服务器压力较大)
                            location.reload()
                        } else {
                            alert(res.error);
                        }
                    }
                })
            })
        }

        function bindBtnEditEvent() {
            $(".btn-edit").click(function () {//.是属性里的，#是id赋值的
                //清空对话框中的默认数据
                $("#formAdd")[0].reset();

                //获取当前订单的id
                var uid = $(this).attr("uid");
                EDIT_ID = uid;

                //发送Ajax去后端获取当前行的相关数据
                $.ajax({
                    url: "/order/detail/",
                    type: "get",
                    data: {
                        uid: uid,
                    },
                    dataTypes: "JSON",
                    success: function (res) {
                        if (res.status) {
                            //console.log(res.data);
                            //使数据在对话框中默认显示
                            $.each(res.data, function (name, value) {
                                $("#id_" + name).val(value);
                            })
                            //修改对话框标题
                            $("#myModalLabel").text("编辑");
                            //点击编辑按钮，显示对话框
                            $('#myModal').modal('show');
                        } else {
                            alert(res.error);
                        }
                    }
                })
            })
        }

    </script>
{% endblock %}